home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earkit / socket / miami3 / miamisdk / netinclude / ppcpragmas / usergroup_pragmas.h < prev   
C/C++ Source or Header  |  1998-05-24  |  14KB  |  530 lines

  1. #ifndef _PPCPRAGMA_USERGROUP_H
  2. #define _PPCPRAGMA_USERGROUP_H
  3.  
  4. #ifndef POWERUP_PPCLIB_INTERFACE_H
  5. #include <powerup/ppclib/interface.h>
  6. #endif
  7.  
  8. #ifndef POWERUP_GCCLIB_PROTOS_H
  9. #include <powerup/gcclib/powerup_protos.h>
  10. #endif
  11.  
  12. #ifndef _STRING_H
  13. #include <string.h>
  14. #endif
  15.  
  16. #ifndef NO_PPCINLINE_STDARG
  17. #define NO_PPCINLINE_STDARG
  18. #endif/* SAS C PPC inlines */
  19.  
  20. #ifndef USERGROUP_BASE_NAME
  21. #define USERGROUP_BASE_NAME UserGroupBase
  22. #endif
  23.  
  24. #define ug_SetupContextTagList(p,t) _ug_SetupContextTagList(USERGROUP_BASE_NAME,p,t)
  25.  
  26. static __inline long
  27. _ug_SetupContextTagList(void *UserGroupBase,const unsigned char *p,struct TagItem *t) {
  28.     struct Caos MyCaos;
  29.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  30.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  31.     MyCaos.a0=(ULONG)p;
  32.     MyCaos.a1=(ULONG)t;
  33.     MyCaos.caos_Un.Offset=-30;
  34.     MyCaos.a6=(ULONG)UserGroupBase;
  35.     return (long)PPCCallOS(&MyCaos);
  36. }
  37.  
  38. #ifndef NO_PPCINLINE_STDARG
  39. #define ug_SetupContextTags(p, tags...) \
  40.     ({ULONG _tags[] = {tags}; ug_SetupContextTagList((p), (long) _tags);})
  41. #endif
  42.  
  43. #define ug_GetErr() _ug_GetErr(USERGROUP_BASE_NAME)
  44.  
  45. static __inline long
  46. _ug_GetErr(void *UserGroupBase) {
  47.     struct Caos MyCaos;
  48.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  49.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  50.     MyCaos.caos_Un.Offset=-36;
  51.     MyCaos.a6=(ULONG)UserGroupBase;
  52.     return (long)PPCCallOS(&MyCaos);
  53. }
  54.  
  55. #define ug_StrError(c) _ug_StrError(USERGROUP_BASE_NAME,c)
  56.  
  57. static __inline const char *
  58. _ug_StrError(void *UserGroupBase,long c) {
  59.     struct Caos MyCaos;
  60.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  61.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  62.     MyCaos.d0=(ULONG)c;
  63.     MyCaos.caos_Un.Offset=-42;
  64.     MyCaos.a6=(ULONG)UserGroupBase;
  65.     return (const char *)PPCCallOS(&MyCaos);
  66. }
  67.  
  68. #define getuid() _getuid(USERGROUP_BASE_NAME)
  69.  
  70. static __inline long
  71. _getuid(void *UserGroupBase) {
  72.     struct Caos MyCaos;
  73.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  74.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  75.     MyCaos.caos_Un.Offset=-48;
  76.     MyCaos.a6=(ULONG)UserGroupBase;
  77.     return (long)PPCCallOS(&MyCaos);
  78. }
  79.  
  80. #define geteuid() _geteuid(USERGROUP_BASE_NAME)
  81.  
  82. static __inline long
  83. _geteuid(void *UserGroupBase) {
  84.     struct Caos MyCaos;
  85.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  86.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  87.     MyCaos.caos_Un.Offset=-54;
  88.     MyCaos.a6=(ULONG)UserGroupBase;
  89.     return (long)PPCCallOS(&MyCaos);
  90. }
  91.  
  92. #define setreuid(r,e) _setreuid(USERGROUP_BASE_NAME,r,e)
  93.  
  94. static __inline long
  95. _setreuid(void *UserGroupBase,long r,long e) {
  96.     struct Caos MyCaos;
  97.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  98.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  99.     MyCaos.d0=(ULONG)r;
  100.     MyCaos.d1=(ULONG)e;
  101.     MyCaos.caos_Un.Offset=-60;
  102.     MyCaos.a6=(ULONG)UserGroupBase;
  103.     return (long)PPCCallOS(&MyCaos);
  104. }
  105.  
  106. #define setuid(i) _setuid(USERGROUP_BASE_NAME,i)
  107.  
  108. static __inline long
  109. _setuid(void *UserGroupBase,long i) {
  110.     struct Caos MyCaos;
  111.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  112.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  113.     MyCaos.d0=(ULONG)i;
  114.     MyCaos.caos_Un.Offset=-66;
  115.     MyCaos.a6=(ULONG)UserGroupBase;
  116.     return (long)PPCCallOS(&MyCaos);
  117. }
  118.  
  119. #define getgid() _getgid(USERGROUP_BASE_NAME)
  120.  
  121. static __inline long
  122. _getgid(void *UserGroupBase) {
  123.     struct Caos MyCaos;
  124.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  125.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  126.     MyCaos.caos_Un.Offset=-72;
  127.     MyCaos.a6=(ULONG)UserGroupBase;
  128.     return (long)PPCCallOS(&MyCaos);
  129. }
  130.  
  131. #define getegid() _getegid(USERGROUP_BASE_NAME)
  132.  
  133. static __inline long
  134. _getegid(void *UserGroupBase) {
  135.     struct Caos MyCaos;
  136.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  137.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  138.     MyCaos.caos_Un.Offset=-78;
  139.     MyCaos.a6=(ULONG)UserGroupBase;
  140.     return (long)PPCCallOS(&MyCaos);
  141. }
  142.  
  143. #define setregid(r,e) _setregid(USERGROUP_BASE_NAME,r,e)
  144.  
  145. static __inline long
  146. _setregid(void *UserGroupBase,long r,long e) {
  147.     struct Caos MyCaos;
  148.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  149.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  150.     MyCaos.d0=(ULONG)r;
  151.     MyCaos.d1=(ULONG)e;
  152.     MyCaos.caos_Un.Offset=-84;
  153.     MyCaos.a6=(ULONG)UserGroupBase;
  154.     return (long)PPCCallOS(&MyCaos);
  155. }
  156.  
  157. #define setgid(i) _setgid(USERGROUP_BASE_NAME,i)
  158.  
  159. static __inline long
  160. _setgid(void *UserGroupBase,long i) {
  161.     struct Caos MyCaos;
  162.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  163.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  164.     MyCaos.d0=(ULONG)i;
  165.     MyCaos.caos_Un.Offset=-90;
  166.     MyCaos.a6=(ULONG)UserGroupBase;
  167.     return (long)PPCCallOS(&MyCaos);
  168. }
  169.  
  170. #define getgroups(n,g) _getgroups(USERGROUP_BASE_NAME,n,g)
  171.  
  172. static __inline long
  173. _getgroups(void *UserGroupBase,long n,long *g) {
  174.     struct Caos MyCaos;
  175.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  176.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  177.     MyCaos.d0=(ULONG)n;
  178.     MyCaos.a1=(ULONG)g;
  179.     MyCaos.caos_Un.Offset=-96;
  180.     MyCaos.a6=(ULONG)UserGroupBase;
  181.     return (long)PPCCallOS(&MyCaos);
  182. }
  183.  
  184. #define setgroups(n,g) _setgroups(USERGROUP_BASE_NAME,n,g)
  185.  
  186. static __inline long
  187. _setgroups(void *UserGroupBase,long n,const long *g) {
  188.     struct Caos MyCaos;
  189.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  190.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  191.     MyCaos.d0=(ULONG)n;
  192.     MyCaos.a1=(ULONG)g;
  193.     MyCaos.caos_Un.Offset=-102;
  194.     MyCaos.a6=(ULONG)UserGroupBase;
  195.     return (long)PPCCallOS(&MyCaos);
  196. }
  197.  
  198. #define initgroups(n,b) _initgroups(USERGROUP_BASE_NAME,n,b)
  199.  
  200. static __inline long
  201. _initgroups(void *UserGroupBase,const char *n,long b) {
  202.     struct Caos MyCaos;
  203.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  204.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  205.     MyCaos.a1=(ULONG)n;
  206.     MyCaos.d0=(ULONG)b;
  207.     MyCaos.caos_Un.Offset=-108;
  208.     MyCaos.a6=(ULONG)UserGroupBase;
  209.     return (long)PPCCallOS(&MyCaos);
  210. }
  211.  
  212. #define getpwnam(n) _getpwnam(USERGROUP_BASE_NAME,n)
  213.  
  214. static __inline struct passwd *
  215. _getpwnam(void *UserGroupBase,const char *n) {
  216.     struct Caos MyCaos;
  217.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  218.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  219.     MyCaos.a1=(ULONG)n;
  220.     MyCaos.caos_Un.Offset=-114;
  221.     MyCaos.a6=(ULONG)UserGroupBase;
  222.     return (struct passwd *)PPCCallOS(&MyCaos);
  223. }
  224.  
  225. #define getpwuid(u) _getpwuid(USERGROUP_BASE_NAME,u)
  226.  
  227. static __inline struct passwd *
  228. _getpwuid(void *UserGroupBase,long u) {
  229.     struct Caos MyCaos;
  230.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  231.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  232.     MyCaos.d0=(ULONG)u;
  233.     MyCaos.caos_Un.Offset=-120;
  234.     MyCaos.a6=(ULONG)UserGroupBase;
  235.     return (struct passwd *)PPCCallOS(&MyCaos);
  236. }
  237.  
  238. #define setpwent() _setpwent(USERGROUP_BASE_NAME)
  239.  
  240. static __inline void
  241. _setpwent(void *UserGroupBase) {
  242.     struct Caos MyCaos;
  243.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  244.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  245.     MyCaos.caos_Un.Offset=-126;
  246.     MyCaos.a6=(ULONG)UserGroupBase;
  247.     PPCCallOS(&MyCaos);
  248. }
  249.  
  250. #define getpwent() _getpwent(USERGROUP_BASE_NAME)
  251.  
  252. static __inline struct passwd *
  253. _getpwent(void *UserGroupBase) {
  254.     struct Caos MyCaos;
  255.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  256.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  257.     MyCaos.caos_Un.Offset=-132;
  258.     MyCaos.a6=(ULONG)UserGroupBase;
  259.     return (struct passwd *)PPCCallOS(&MyCaos);
  260. }
  261.  
  262. #define endpwent() _endpwent(USERGROUP_BASE_NAME)
  263.  
  264. static __inline void
  265. _endpwent(void *UserGroupBase) {
  266.     struct Caos MyCaos;
  267.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  268.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  269.     MyCaos.caos_Un.Offset=-138;
  270.     MyCaos.a6=(ULONG)UserGroupBase;
  271.     PPCCallOS(&MyCaos);
  272. }
  273.  
  274. #define getgrnam(n) _getgrnam(USERGROUP_BASE_NAME,n)
  275.  
  276. static __inline struct group *
  277. _getgrnam(void *UserGroupBase,const char *n) {
  278.     struct Caos MyCaos;
  279.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  280.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  281.     MyCaos.a1=(ULONG)n;
  282.     MyCaos.caos_Un.Offset=-144;
  283.     MyCaos.a6=(ULONG)UserGroupBase;
  284.     return (struct group *)PPCCallOS(&MyCaos);
  285. }
  286.  
  287. #define getgrgid(g) _getgrgid(USERGROUP_BASE_NAME,g)
  288.  
  289. static __inline struct group *
  290. _getgrgid(void *UserGroupBase,long g) {
  291.     struct Caos MyCaos;
  292.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  293.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  294.     MyCaos.d0=(ULONG)g;
  295.     MyCaos.caos_Un.Offset=-150;
  296.     MyCaos.a6=(ULONG)UserGroupBase;
  297.     return (struct group *)PPCCallOS(&MyCaos);
  298. }
  299.  
  300. #define setgrent() _setgrent(USERGROUP_BASE_NAME)
  301.  
  302. static __inline void
  303. _setgrent(void *UserGroupBase) {
  304.     struct Caos MyCaos;
  305.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  306.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  307.     MyCaos.caos_Un.Offset=-156;
  308.     MyCaos.a6=(ULONG)UserGroupBase;
  309.     PPCCallOS(&MyCaos);
  310. }
  311.  
  312. #define getgrent() _getgrent(USERGROUP_BASE_NAME)
  313.  
  314. static __inline struct group *
  315. _getgrent(void *UserGroupBase) {
  316.     struct Caos MyCaos;
  317.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  318.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  319.     MyCaos.caos_Un.Offset=-162;
  320.     MyCaos.a6=(ULONG)UserGroupBase;
  321.     return (struct group *)PPCCallOS(&MyCaos);
  322. }
  323.  
  324. #define endgrent() _endgrent(USERGROUP_BASE_NAME)
  325.  
  326. static __inline void
  327. _endgrent(void *UserGroupBase) {
  328.     struct Caos MyCaos;
  329.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  330.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  331.     MyCaos.caos_Un.Offset=-168;
  332.     MyCaos.a6=(ULONG)UserGroupBase;
  333.     PPCCallOS(&MyCaos);
  334. }
  335.  
  336. #define crypt(k,s) _crypt(USERGROUP_BASE_NAME,k,s)
  337.  
  338. static __inline char *
  339. _crypt(void *UserGroupBase,const char *k,const char *s) {
  340.     struct Caos MyCaos;
  341.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  342.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  343.     MyCaos.a0=(ULONG)k;
  344.     MyCaos.a1=(ULONG)s;
  345.     MyCaos.caos_Un.Offset=-174;
  346.     MyCaos.a6=(ULONG)UserGroupBase;
  347.     return (char *)PPCCallOS(&MyCaos);
  348. }
  349.  
  350. #define ug_GetSalt(u,b,s) _ug_GetSalt(USERGROUP_BASE_NAME,u,b,s)
  351.  
  352. static __inline char *
  353. _ug_GetSalt(void *UserGroupBase,const struct passwd *u,char *b,unsigned long s) {
  354.     struct Caos MyCaos;
  355.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  356.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  357.     MyCaos.a0=(ULONG)u;
  358.     MyCaos.a1=(ULONG)b;
  359.     MyCaos.d0=(ULONG)s;
  360.     MyCaos.caos_Un.Offset=-180;
  361.     MyCaos.a6=(ULONG)UserGroupBase;
  362.     return (char *)PPCCallOS(&MyCaos);
  363. }
  364.  
  365. #define getpass(p) _getpass(USERGROUP_BASE_NAME,p)
  366.  
  367. static __inline char *
  368. _getpass(void *UserGroupBase,const char *p) {
  369.     struct Caos MyCaos;
  370.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  371.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  372.     MyCaos.a1=(ULONG)p;
  373.     MyCaos.caos_Un.Offset=-186;
  374.     MyCaos.a6=(ULONG)UserGroupBase;
  375.     return (char *)PPCCallOS(&MyCaos);
  376. }
  377.  
  378. #define umask(m) _umask(USERGROUP_BASE_NAME,m)
  379.  
  380. static __inline unsigned short
  381. _umask(void *UserGroupBase,unsigned short m) {
  382.     struct Caos MyCaos;
  383.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  384.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  385.     MyCaos.d0=(ULONG)m;
  386.     MyCaos.caos_Un.Offset=-192;
  387.     MyCaos.a6=(ULONG)UserGroupBase;
  388.     return (unsigned short)PPCCallOS(&MyCaos);
  389. }
  390.  
  391. #define getumask() _getumask(USERGROUP_BASE_NAME)
  392.  
  393. static __inline unsigned short
  394. _getumask(void *UserGroupBase) {
  395.     struct Caos MyCaos;
  396.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  397.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  398.     MyCaos.caos_Un.Offset=-198;
  399.     MyCaos.a6=(ULONG)UserGroupBase;
  400.     return (unsigned short)PPCCallOS(&MyCaos);
  401. }
  402.  
  403. #define setsid() _setsid(USERGROUP_BASE_NAME)
  404.  
  405. static __inline struct Task *
  406. _setsid(void *UserGroupBase) {
  407.     struct Caos MyCaos;
  408.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  409.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  410.     MyCaos.caos_Un.Offset=-204;
  411.     MyCaos.a6=(ULONG)UserGroupBase;
  412.     return (struct Task *)PPCCallOS(&MyCaos);
  413. }
  414.  
  415. #define getpgrp() _getpgrp(USERGROUP_BASE_NAME)
  416.  
  417. static __inline struct Task *
  418. _getpgrp(void *UserGroupBase) {
  419.     struct Caos MyCaos;
  420.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  421.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  422.     MyCaos.caos_Un.Offset=-210;
  423.     MyCaos.a6=(ULONG)UserGroupBase;
  424.     return (struct Task *)PPCCallOS(&MyCaos);
  425. }
  426.  
  427. #define getlogin() _getlogin(USERGROUP_BASE_NAME)
  428.  
  429. static __inline char *
  430. _getlogin(void *UserGroupBase) {
  431.     struct Caos MyCaos;
  432.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  433.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  434.     MyCaos.caos_Un.Offset=-216;
  435.     MyCaos.a6=(ULONG)UserGroupBase;
  436.     return (char *)PPCCallOS(&MyCaos);
  437. }
  438.  
  439. #define setlogin(b) _setlogin(USERGROUP_BASE_NAME,b)
  440.  
  441. static __inline long
  442. _setlogin(void *UserGroupBase,const char *b) {
  443.     struct Caos MyCaos;
  444.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  445.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  446.     MyCaos.a1=(ULONG)b;
  447.     MyCaos.caos_Un.Offset=-222;
  448.     MyCaos.a6=(ULONG)UserGroupBase;
  449.     return (long)PPCCallOS(&MyCaos);
  450. }
  451.  
  452. #define setutent() _setutent(USERGROUP_BASE_NAME)
  453.  
  454. static __inline void
  455. _setutent(void *UserGroupBase) {
  456.     struct Caos MyCaos;
  457.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  458.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  459.     MyCaos.caos_Un.Offset=-228;
  460.     MyCaos.a6=(ULONG)UserGroupBase;
  461.     PPCCallOS(&MyCaos);
  462. }
  463.  
  464. #define getutent() _getutent(USERGROUP_BASE_NAME)
  465.  
  466. static __inline struct utmp *
  467. _getutent(void *UserGroupBase,const char *b) {
  468.     struct Caos MyCaos;
  469.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  470.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  471.     MyCaos.caos_Un.Offset=-234;
  472.     MyCaos.a6=(ULONG)UserGroupBase;
  473.     return (struct utmp *)PPCCallOS(&MyCaos);
  474. }
  475.  
  476. #define endutent() _endutent(USERGROUP_BASE_NAME)
  477.  
  478. static __inline void
  479. _endutent(void *UserGroupBase) {
  480.     struct Caos MyCaos;
  481.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  482.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  483.     MyCaos.caos_Un.Offset=-240;
  484.     MyCaos.a6=(ULONG)UserGroupBase;
  485.     PPCCallOS(&MyCaos);
  486. }
  487.  
  488. #define getlastlog(u) _getlastlog(USERGROUP_BASE_NAME,u)
  489.  
  490. static __inline struct lastlog *
  491. _getlastlog(void *UserGroupBase,long u) {
  492.     struct Caos MyCaos;
  493.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  494.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  495.     MyCaos.d0=(ULONG)u;
  496.     MyCaos.caos_Un.Offset=-246;
  497.     MyCaos.a6=(ULONG)UserGroupBase;
  498.     return (struct lastlog *)PPCCallOS(&MyCaos);
  499. }
  500.  
  501. #define setlastlog(u,n,h) _setlastlog(USERGROUP_BASE_NAME,u,n,h)
  502.  
  503. static __inline long
  504. _setlastlog(void *UserGroupBase,long u,char *n,char *h) {
  505.     struct Caos MyCaos;
  506.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  507.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  508.     MyCaos.d0=(ULONG)u;
  509.     MyCaos.a0=(ULONG)n;
  510.     MyCaos.a1=(ULONG)h;
  511.     MyCaos.caos_Un.Offset=-252;
  512.     MyCaos.a6=(ULONG)UserGroupBase;
  513.     return (long)PPCCallOS(&MyCaos);
  514. }
  515.  
  516. #define getcredentials(t) _getcredentials(USERGROUP_BASE_NAME,t)
  517.  
  518. static __inline struct UserGroupCredentials *
  519. _getcredentials(void *UserGroupBase,struct Task *t) {
  520.     struct Caos MyCaos;
  521.     MyCaos.M68kCacheMode=IF_CACHEFLUSHALL;
  522.     MyCaos.PPCCacheMode=IF_CACHEFLUSHALL;
  523.     MyCaos.a0=(ULONG)t;
  524.     MyCaos.caos_Un.Offset=-258;
  525.     MyCaos.a6=(ULONG)UserGroupBase;
  526.     return (struct UserGroupCredentials *)PPCCallOS(&MyCaos);
  527. }
  528.  
  529. #endif
  530.